package com.nurt.dao;

import com.nurt.entity.OrderDishEntity;
import com.nurt.entity.OrderEntity;

import java.sql.SQLException;
import java.util.List;
/**
 * 订单菜品数据访问接口。
 * 提供了对订单菜品信息的增、删、改、查等操作。
 */
public interface OrderDishDao {

    /**
     * 根据订单ID查询订单菜品列表。
     *
     * @param orderId 订单ID。
     * @return 订单菜品实体列表。
     * @throws SQLException 如果查询过程中发生数据库错误。
     */
    List<OrderDishEntity> selectOrderDishes(int orderId) throws SQLException;

    /**
     * 根据订单实体查询订单菜品列表。
     *
     * @param order 订单实体。
     * @return 订单菜品实体列表。
     * @throws SQLException 如果查询过程中发生数据库错误。
     */
    List<OrderDishEntity> selectOrderDishes(OrderEntity order) throws SQLException;

    /**
     * 更新订单菜品信息。
     *
     * @param orderDish 需要更新的订单菜品实体。
     * @return 更新操作影响的行数。
     * @throws SQLException 如果更新过程中发生数据库错误。
     */
    int updateOrderDish(OrderDishEntity orderDish) throws SQLException;

    /**
     * 插入新的订单菜品信息。
     *
     * @param orderDish 需要插入的订单菜品实体。
     * @return 插入操作影响的行数。
     * @throws SQLException 如果插入过程中发生数据库错误。
     */
    int insertOrderDish(OrderDishEntity orderDish) throws SQLException;

    /**
     * 删除指定订单ID和菜品ID的订单菜品信息。
     *
     * @param orderId 订单ID。
     * @param dishId 菜品ID。
     */
    void deleteOrderDish(int orderId, int dishId);

    /**
     * 删除指定订单ID的所有订单菜品信息。
     *
     * @param orderId 订单ID。
     */
    void deleteAllOrderDishes(int orderId);
}
